home *** CD-ROM | disk | FTP | other *** search
- /* MPLAYER.H
- *
- * Module Player definitions
- *
- * Copyright 1994 Petteri Kangaslampi and Jarno Paananen
- *
- * This file is part of the MIDAS Sound System, and may only be
- * used, modified and distributed under the terms of the MIDAS
- * Sound System license, LICENSE.TXT. By continuing to use,
- * modify or distribute this file you indicate that you have
- * read the license and understand and accept it fully.
- */
-
-
- #ifndef __MPLAYER_H
- #define __MPLAYER_H
-
-
- #define MPHDRSIZE 1084 /* header size needed for
- ModulePlayer.Identify() */
-
-
-
- /****************************************************************************\
- * enum mpStatus
- * -------------
- * Description: Module Player status
- \****************************************************************************/
-
- enum mpStatus
- {
- mpUnInitialized = 0, /* Module Player is uninitialized */
- mpInitialized, /* initialized */
- mpPlaying, /* currently playing a module */
- mpStopped /* stopped */
- };
-
-
-
- /****************************************************************************\
- * enum modIDNumbers
- * -----------------
- * Description: mpModule ID numbers
- \****************************************************************************/
-
- enum modIDNumbers
- {
- idS3M = 0, /* Scream Tracker 3 module */
- idMOD = 1, /* Protracker module */
- };
-
-
-
- /****************************************************************************\
- * struct mpChanInfo
- * -----------------
- * Description: Module Player channel info structure
- \****************************************************************************/
-
- typedef struct
- {
- uchar flags; /* bits 0-4 - UNDEFINED
- bit 5 - new note and/or instrument
- bit 6 - new volume (S3M)
- bit 7 - command */
- uchar note; /* note number */
- uchar instrument; /* instrument number */
- uchar volume; /* playing volume */
- uchar command; /* command number */
- uchar infobyte; /* command infobyte */
- uchar volumebar; /* "fake" volume bar */
- char (far *commandname); /* pointer to command name string,
- ASCIIZ */
- } mpChanInfo;
-
-
-
-
- /****************************************************************************\
- * struct mpInformation
- * --------------------
- * Description: Module Player information structure
- \****************************************************************************/
-
- typedef struct
- {
- ushort numChannels; /* number of channels. MUST be set by
- the routine calling
- MP->GetInformation() */
- ushort setFrame; /* 1 if "set frame", 0 if not */
- ushort speed; /* playing speed */
- ushort BPM; /* playing BPM tempo */
- ushort pos; /* current playing position */
- ushort pattern; /* current pattern number */
- ushort row; /* current row number */
- ushort loopCnt; /* song loop counter */
- mpChanInfo *chans; /* pointer to channel data structures.
- MUST be allocated by the routine
- calling MP->GetInformation() */
- } mpInformation;
-
-
-
- /****************************************************************************\
- * struct mpInstrument
- * -------------------
- * Description: Module Player instrument structure in memory
- \****************************************************************************/
-
- typedef struct
- {
- char fileName[13]; /* DOS file name, ASCIIZ */
- char iname[32]; /* instrument name, ASCIIZ */
- uchar *sample; /* pointer to sample data or NULL
- if not available (no sample or
- deallocated) */
- ushort length; /* sample length */
- ushort loopStart; /* sample loop start */
- ushort loopEnd; /* sample loop end */
- uchar looping; /* 1 if looping sample, 0 if not */
- uchar volume; /* sample default playing volume */
- ulong c2Rate; /* C2 sampling rate */
- uchar finetune; /* sample default finetune value */
- ushort sdInstHandle; /* Sound Device instrument handle for
- this instrument or 0 if not added
- to Sound Device instrument list */
- } mpInstrument;
-
-
-
- /****************************************************************************\
- * struct mpPattern
- * ----------------
- * Description: Module Player pattern structure in memory
- \****************************************************************************/
-
- typedef struct
- {
- ushort length; /* pattern data length in bytes */
- uchar data[]; /* actual pattern data */
- } mpPattern;
-
-
-
- /****************************************************************************\
- * struct mpModule
- * ---------------
- * Description: Module Player module in memory
- \****************************************************************************/
-
- typedef struct
- {
- char ID[4]; /* Module identifier */
- ushort IDnum; /* ID number (0=S3M, 1=MOD) */
- char songName[32]; /* song name, ASCIIZ */
- ushort songLength; /* number of orders */
- ushort numInsts; /* number of instruments */
- ushort numPatts; /* number of patterns */
- ushort numChans; /* number of channels */
- struct /* flags: (S3M) */
- {
- int st2Vibrato : 1; /* Scream Tracker 2 vibrato */
- int st2Tempo : 1; /* Scream Tracker 2 tempo */
- int ptSlides : 1; /* ProTracker slides */
- int zeroVolOpt : 1; /* 0-volume optimizations */
- int ptLimits : 1; /* ProTracker limits */
- int filter : 1; /* Enable filter / sfx */
- int unused : 10;
- } flags;
- uchar masterVol; /* master volume */
- uchar speed; /* initial speed */
- uchar tempo; /* initial BPM tempo */
- uchar masterMult; /* master multiplier */
- uchar stereo; /* 1 = stereo, 0 = mono */
- signed char chanSettings[32]; /* channel panning values */
- uchar *orders; /* pointer to pattern orders */
- mpInstrument *insts; /* pointer to instrument datas */
- mpPattern **patterns; /* pointer to array of pattern
- pointers */
- uchar *pattEMS; /* one byte for each pattern - 1 if
- pattern in ems, 0 if not */
- uchar *instsUsed; /* one byte for each instrument - 1 if
- instrument is used, 0 if not */
- } mpModule;
-
-
-
- /****************************************************************************\
- * struct ModulePlayer
- * -------------------
- * Description: Module Player structure. See MPLAYER.TXT for documentation
- \****************************************************************************/
-
- typedef struct
- {
- ushort status;
- ushort updRate;
-
- int (far *Identify)(uchar *header, int *recognized);
-
- int (far *Init)(SoundDevice *SD);
- int (far *Close)(void);
-
- int (far *LoadModule)(char *fileName, SoundDevice *SD, mpModule **module);
- int (far *FreeModule)(mpModule *module, SoundDevice *SD);
-
- int (far *PlayModule)(mpModule *module, ushort firstSDChannel, ushort
- numChannels, ushort loopStart, ushort loopEnd);
- int (far *StopModule)(void);
-
- int (far *SetInterrupt)(void);
- int (far *RemoveInterrupt)(void);
-
- int (far *Play)(void);
-
- int (far *SetPosition)(ushort pos);
- int (far *GetInformation)(mpInformation *info);
- int (far *SetMasterVolume)(uchar volume);
- } ModulePlayer;
-
-
-
- #endif
-